/********************************************************************************************************
* 文 件 名   : XBF_Font.c
* 创 建 者   : Neo Yan
* 创建日期   : 2017年12月22日
* 版权说明   : Copyright (c) 2016-2025   广东乐心医疗电子股份有限公司
* 文件描述   : 管理所有XBF字体的初始化、接口调用
* 修改历史   : 2017.12.22：创建
*
********************************************************************************************************/
#include "GUI.h"
#include <string.h>
#include <stdbool.h>
#include "XBF_Font.h"

#ifdef _WIN32
#include <stdio.h>
#else
#include <stdint.h>

#include "spi_flash.h"

#endif

/* 宋体 32 点阵定义 */
#ifndef _WIN32
#define XBF_FONT_SONG_32_ADDR 0x00000000
#else
#define XBF_FONT_SONG_32_ADDR 0x00000000
#endif
GUI_XBF_DATA    XBF_DataAA32;
GUI_FONT        XBF_FontAA32;
void            *fontFileAA32 = NULL;


static int _cbGetData32(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer);


/********************************************************************************************************
* 函 数 名  : _cbGetData32
* 函数功能  : XBF 字体的回调函数, 32 点阵
* 输入参数  : Off - 地址偏移
*             NumBytes - 需要读出的字节数
*             pVoid - 指针变量，一般用于带文件系统时的 FIL 类型变量
*             pBuffer - 获取字体的点阵数据
* 输出参数  : 无
* 返 回 值  : 0 - 成功 1 - 失败
********************************************************************************************************/
static int _cbGetData32(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
{
#ifndef _WIN32
    /* 读取点阵数据 */
    /* 需要由底层实现 */
    // Flash_ReadBuffer(pBuffer, XBF_FONT_SONG_32_ADDR + Off, NumBytes);

    //use external flash no flash
    //result = spi_external_flash_read(XBF_FONT_SONG_32_ADDR + Off, pBuffer, NumBytes);
    SPI_FLASH_BufferRead(pBuffer, XBF_FONT_SONG_32_ADDR + Off, NumBytes);

    return 0;


#else

#endif


}


/********************************************************************************************************
* 函 数 名  : GUI_SetXBF
* 函数功能  : 创建 XBF 字体，在调用GUI_Init()之后就需要调用
* 输入参数  : 无
* 输出参数  : 无
* 返 回 值  : 无
********************************************************************************************************/
int GUI_SetXBF(void)
{
    SPI_FLASH_Init();
#ifdef _WIN32

#else

    //spi_external_flash_read(XBF_FONT_SONG_32_ADDR, fontLibIndexTable, 65504 * 6 + 18);

#endif
    /* 创建抗锯齿 24 点阵字体 */
    	return GUI_XBF_CreateFont(&XBF_FontAA32,         /* GUI_FONT 类型变量 */
    							  &XBF_DataAA32,         /* GUI_XBF_DATA 类型变量 */
    							  GUI_XBF_TYPE_PROP_AA2_EXT,   /* 字体类型 */
    							  _cbGetData32,        /* 回调函数 */
    							  fontFileAA32);        /* 回调函数参数 */
}


